package com.koocloud.electroplatemanage.utils;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

/**
 * @ClassName: ListUtil
 * @Description: 对集合操作的工具类
 * @Author 2019110501
 * @DateTime 2020年6月2日 下午3:29:42
 */
public class ListUtil {

    /**
     * @Title: FindListOne
     * @Description: 查询集合中的一个实体
     * @Author 2019110501
     * @DateTime 2020年6月2日 下午3:30:06
     * @param <T>
     * @param list
     * @param key
     * @param colName
     * @param clz
     * @return
     */
    public static <T> T FindListOne(List<T> list, String key, String colName, Class<T> clz) {
        try {
            for (T t : list) {
                Field field = clz.getDeclaredField(colName);
                field.setAccessible(true); // 打开javabean的访问权限
                if (field.get(t).toString().equals(key)) {
                    return t;
                }
            }
            return null;
        } catch (Exception e) {
            // TODO: handle exception
            return null;
        }

    }

    /**
     * @Title: FindListByKey
     * @Description: 查找集合中符合条件的实体
     * @Author 2019110501
     * @DateTime 2020年6月2日 下午3:30:24
     * @param <T>
     * @param list
     * @param keys
     * @param colNames
     * @param opers,对比方式，1相同，2不同,3大于，4小于
     * @param clz
     * @return
     */
    public static <T> List<T> FindListByKey(List<T> list, String[] keys, String[] colNames, int[] opers, Class<T> clz) {
        List<T> l = new ArrayList<T>();
        try {
            for (T t : list) {
                boolean isOK = true;
                for (int i = 0; i < keys.length; i++) {
                    String key = keys[i];
                    String colName = colNames[i];
                    int oper = opers[i];
                    Field field = clz.getDeclaredField(colName);
                    field.setAccessible(true); // 打开javabean的访问权限
                    if (oper == 1) {
                        if ((field.get(t) == null) || (!field.get(t).toString().equals(key))) {
                            isOK = false;
                            continue;
                        }
                    } else if (oper == 2) {
                        if ((field.get(t) == null) || (field.get(t).toString().equals(key))) {
                            isOK = false;
                            continue;
                        }
                    } else if (oper == 3) {
                        if ((field.get(t) == null) || (Long.valueOf(field.get(t).toString()) <= Long.valueOf(key))) {
                            isOK = false;
                            continue;
                        }
                    } else if (oper == 4) {
                        if ((field.get(t) == null) || (Long.valueOf(field.get(t).toString()) >= Long.valueOf(key))) {
                            isOK = false;
                            continue;
                        }
                    }
                }
                if (isOK) {
                    l.add(t);
                }

            }
            return l;
        } catch (Exception e) {
            // TODO: handle exception
            return new ArrayList<T>();
        }
    }

    /**
     * @Title: isEmpty
     * @Description: 判断list集合是否为空
     * @Author 2019110501
     * @DateTime 2020年6月2日 下午3:31:03
     * @param inList
     * @return
     */
    public static boolean isEmpty(List<?> inList) {
        return inList == null || inList.size() == 0 || inList.isEmpty();
    }
    
    


}